抽象工厂


抽象工厂是基于工厂方法模式,支持创建多种n种对象

类图

回顾一下工厂方法,定义了一种要创建的目标Thing,而抽象工厂,则是定义了n种要创建的目标,例如Thing1,Thing2,我们可以认为n个工厂方法组合起来就是抽象工厂。

工厂方法和抽象工厂的接口区别如下:

抽象工厂详细类图:

示例

第一种创建的目标:

public interface Thing1 {}

public class ConcreteThing1A implements Thing1 {}

public class ConcreteThing1B implements Thing1 {}

第二种要创建的目标:

public interface Thing2 {}

public class ConcreteThing2A implements Thing2 {}

public class ConcreteThing2B implements Thing2 {}

定义抽象工厂,支持创建2种目标

public abstract AbstractFactory {
    abstract Thing1 createThing1();
    abstract Thing2 createThing2();
}

public class ConcreteFactory1 extends AbstractFactory {
    @overrite
    public Thing1 createThing1(){
        return new ConcreteThing1A();
    }
    @overrite
    public Thing2 createThing2(){
        return new ConcreteThing2A();
    }
}

public class ConcreteFactory2 extends AbstractFactory {
    @overrite
    public Thing1 createThing1(){
        return new ConcreteThing1B();
    }
    @overrite
    public Thing2 createThing2(){
        return new ConcreteThing2B();
    }
}
文章作者: 周君
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 周君 !
评论